public enum BoardElement
{
	WALL('#'), PLAYER('@'), PLAYER_ON_GOAL('+'), BOX('$'), BOX_ON_GOAL(
			'*'), GOAL('.'), EMPTY_FLOOR(' ');

	private char character;

	private BoardElement(char character)
	{
		this.character = character;
	}

	public char getCharacter()
	{
		return this.character;
	}
	
	public BoardElement copy()
	{
	    return BoardElement.getBoardElementForChar(this.character);
	}

	public static BoardElement getBoardElementForChar(char character)
	{
		if (character == '#')
		{
			return WALL;
		}
		else if (character == ' ')
		{
			return EMPTY_FLOOR;
		}
		else if (character == '$')
		{
			return BOX;
		}
		else if (character == '*')
		{
			return BOX_ON_GOAL;
		}
		else if (character == '.')
		{
			return GOAL;
		}
		else if (character == '@')
		{
			return PLAYER;
		}
		else if (character == '+')
		{
			return PLAYER_ON_GOAL;
		}
		System.err.println("This should not happen!");
		return null;
	}
}
